import random

list1 = [1,2,3,4,5]
print(list1)
list1.append(6)
print(list1)
list1.remove(3)
print(list1)
list1[2]=8
print(list1)
index = list1.index(8)
print(index)

for i in range(len(list1)):
    print(list1[i])

list2 = [7,8,9]
for i in range(len(list2)):
    list1.append(list2[i])
print(list1)

list3 = [10,11,12]
list1.extend(list3)
print(list1)
print(list1[2:5])
list1[2:3] = [13, 14]
print(list1)
#进阶
my_list = [3,"apple",9,"banana",7,"cherry",2,"date",5,"elderberry"]
print(my_list)
my_list.append("flg")
print(my_list)
# my_list.remove("banana")
# print(my_list)
my_list[6]="grape"
print(my_list)
index1=my_list.index("cherry")
print(index1)
for i in range(len(my_list)):
    print(my_list[i])
my_list.insert(5,'kiwa')
print(my_list)
print(my_list[2])
print(my_list[-2])
print(my_list[2:7])
print(my_list)
print(my_list[-1::-1])

my_list = [3, "banana", 9, "apple", 7, "cherry", 2, "date", 5, "elderberry"]
#提取字符串并排序
strings = []
for item in my_list:
    if isinstance(item,str):
        strings.append(item)
strings.sort()
print(strings)
# 用于迭代排序后的字符串列表
str_index = 0
# 将排序后的字符串放回原列表
sorted_list = []
for item in my_list:
    if isinstance(item, str):
        sorted_list.append(strings[str_index])
        str_index += 1
    else:
        sorted_list.append(item)

print(sorted_list)

my_list = [3, "apple", 9, "banana", 7, "cherry", 2, "date", 5, "elderberry"]
# 数字到字符串的映射字典
num_to_str = {
    1: 'one',
    2: 'two',
    3: 'three',
    4: 'four',
    5: 'five',
    6: 'six',
    7: 'seven',
    8: 'eight',
    9: 'nine',
    10: 'ten'
}

new_list = []
for item in my_list:
    if isinstance(item, int):
        new_list.append(num_to_str[item])
    else:
        new_list.append(item)

print(new_list)



#复杂练习题
list4 = []
for i in range(1,101):
    if i % 2 ==0:
        list4.append(i)
print(list4)
double_list4 = []
for i in list4:
    i = i*i
    double_list4.append(i)
print(double_list4)


# 删除所有大于1000的数字
for num in double_list4[:]:
    if num > 1000:
        double_list4.remove(num)
print(double_list4)
#将列表逆序
print(double_list4[-1::-1])
#使用切片操作取出列表中的前10个元素
print(double_list4)
print(double_list4[0:10:1])
#将一个新列表`[101, 102, 103]`加到现有列表的末尾
# new_list1 = [101,102,103]
# double_list4.extend(new_list1)
# print(double_list4)
#计算列表中元素的平均值
result = sum(double_list4)/len(double_list4)
print('{:.2f}'.format(result))
#找到列表中的最大值和最小值。
max = max(double_list4)
print(max)
min = min(double_list4)
print(min)
#找出列表中第一次出现的11的索引位置。
list5 = [1,2,4,5,6,7,11,8,9]
index=list5.index(11)
print(index)
#用循环遍历列表，把每个数字替换为其对应的字符形式（例如：1替换为'1'）。注意使用不同类型的循环来实现
list6 =[]
for i in list5:
    i =str(i)
    list6.append(i)
print(list6)
#将列表中的所有元素转换成浮点数形式
list7 = []
for i in list5:
    i = float(i)
    list7.append(i)
print(list7)
#找出列表中所有大于50的元素个数
count = 0
print(double_list4)
for i in double_list4:
    if i > 50:
        count = count+1
print(count)
#在列表的第3个位置插入数字99
print(list5)
list5.insert(2,99)
print(list5)
#删除列表中的最后一个元素
del list5[-1]
print(list5)
#  使用列表推导式创建一个新列表，包含原列表中每个数字乘以2的结果。
print(list5)
list8 = [var*2 for var in list5]
print(list8)
#  将列表分成两部分，一部分是小于等于50的数，另一部分是大于50的数。
max_50 =[]
min_50 =[]
print(double_list4)
for i in double_list4:
    if i > 50:
        max_50.append(i)
    else:
        min_50.append(i)
print(min_50)
print(max_50)
#  将列表转换为一个字典，其中列表元素作为键，其在列表中的索引作为值。

# cc = {}
# print(list5)
# for i in range(0, len(list5) - 1, 2):
#     cc[list5[i]] = list5[i + 1]
# print(cc)

# 使用`enumerate`函数遍历列表，并打印元素及其索引。
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
list(enumerate(seasons))
print(seasons)
#  从列表中随机取出一个元素。
b = random.randint(0,len(seasons)-1)
print(b)
print(seasons[b])
#  将列表保存到一个txt文件里，每个元素占一行。

def save_list_to_file(lst, filename):
    with open(filename, "w") as file:
        for item in lst:
            file.write(str(item) + "\n")
my_list = [1, 2, 3, 4, 5,6,9,9,7]
save_list_to_file(my_list, "data.txt")

